控制台、Shell 与终端的区别
导读:本节将帮助各位开发者/运维同学了解控制台、终端与 shell 之间的关系与区别。包括它们的类型、用途以及在当前的系统哪里可以找到它们。
目录
控制台
Shell
Windows Shell
Linux Shell
终端
1 什么是控制台
控制台的英文名为Console。它是指显示器和输入设备(通常是键盘加鼠标)的组合,它允许用户输入命令,并从计算机接收视觉输出。
在 Linux 系统上,我们可以使用 <ctrl> + <alt> + <F1 | F2 | F3 | …> 到达不同的软件控制台。许多系统仍然具有用于管理基于串行的控制台端口,例如专业的网络设备。
控制台的概念通常是指连接到小型计算机或大型机并用于监视系统状态的终端。
2 什么是 Shell
大家知道,内核是操作系统关键的组成部分。内核用来识别计算机上的所有物理硬件,并使每个组件能够相互通信。在操作系统内部,内核获取传递给它的指令并让硬件处理。
内核是操作系统的中央核心。它控制系统中发生的一切并与硬件通信。它执行诸如执行进程、处理中断等任务。它有许多子系统,例如进程管理、调度、文件管理、设备管理和网络管理等。
用户不能直接与内核交互,在用户和内核之间有一个称为 Shell 的程序,它负责从用户那里获取输入并将它们传递给内核。简单地说,Shell 是一个程序,它负责从键盘等输入设备获取命令并将它们交给内核来执行,它充当用户和内核之间的接口。
Shell 是一个有趣的名字,竟没有一个中文适合它。
好像操作系统的“内核”是一个更有趣的名字,两个像是鸡蛋的外壳和蛋黄。
对于操作系统来说,Shell 其实是包裹内核外层的一层软件。SHELL 提供操作系统接口使用并提供对内核的访问,它收集用户的输入并根据该输入执行程序,当程序完成执行时,它会显示该程序的输出。
在编程语言的术语中,它也称为命令行或命令行界面( CLI,Command Line Interface )。用户可以键入命令来执行诸如运行程序、打开和浏览目录以及查看当前正在运行的进程等等功能。
Shell 除了指示操作系统内核执行用户输出的命令或批处理脚本外,还可以接收脚本并解释其中的逻辑。
Shell 是一个我们可以在其中运行命令、程序和 shell 脚本的环境。有不同风格的 shell,就像有不同风格的操作系统一样。每种风格的 shell 都有自己的一组可识别的命令和函数。
简单总结,Shell是操作系统的最外层。
2.1 图形用户界面
由于 Shell 仅比操作系统高出一层,因此操作系统提供了图形用户界面(也称 GUI ,Graphics User Interface ) 供用户操作,比如在文件夹中建立、移动和删除文件。
GUI 图形用户界面是一种图形表示形式,用户可以在其中通过图形图标与软件或设备进行交互。比如Windows、macOS、Ubuntu Unity 和 GNOME 都提供了图形界面。
2.2 命令行界面CLI
CLI 命令行界面是一种控制台或基于文本的表示形式,用户可以在其中键入命令来操作软件或设备。它完全通过终端和 Shell 进行交互。
2.2.1 Windows 终端/Shell
如今,用户在Windows上完全依赖图形界面(GUI)和菜单驱动与机器交互。但是你有没有想过,如果这些 GUI 遇到问题而无法使用系统,该怎么办?
这时候 CLI/Shell的用武之地就来了。
人们使用 CLI 是为了更好地控制系统。但是有些命令只能通过 Shell 访问和操作,用它控制 Unix/Linux 和 Windows 上较为复杂的操作。
命令提示符是大多数 Windows 操作系统中可用的命令行解释器应用程序。它用于执行输入的命令。这些命令中的大多数通过脚本和批处理文件自动执行任务,执行高级管理功能,以及解决或解决某种类型的 Windows 问题。
Powershell或cmd.exe 将允许用户访问Windows 命令提示符,也称为 Microsoft DOS, cmd.exe是用于Windows NT、2000 和 XP的 32 位命令提示符,它为你的计算机提供磁盘、文件维护功能以及网络功能。
现在的Windows有2个Shell:
Command Shell(命令提示符)
Powershell
还有各种集成终端与一些开发人员工具/软件,例如 Integrated Terminal 也可以使用。如:
Visual Studio Code
Android Studio
WP Command
还有一些,在此不一一列举。
2.2.2 Linux Shell
大多数 Linux 发行版都带有一个名为 bash shell 的 Shell。Bash 最初是GNU 项目shell,其灵感来自 Steve Bourne 编写的原始 Unix shell 程序 sh,并模仿其构建。由于它受到 Steve Bourne的高度启发,GNU 项目的人们决定将新的 shell 命名为 bash,这是 Bourne Again Shell 的首字母缩写词。
bash shell 的许多替代品可以与 Linux 内核一起使用,例如 ZSH (ZShell)、Fish、KSH (Korn Shell) 等。这些不同的 Shell 程序提供不同的功能,但基本命令以及与 Shell 交互是相同的。
在 Linux 世界中,当提到命令行界面时均指的是 Shell,在大多数情况下指的是 bash shell。但通常,我们要使用一个程序与 shell 交互,称为终端仿真器。Shell和终端彼此不同,但通常可以互换着称呼。
3 终端
终端(Terminal) 这个词是一个Unix术语,也被称为模拟器,它表示一种特殊文件(或设备文件),能够执行额外的命令(除了读写之外)。终端是底层操作系统的接口,即连接到服务器的屏幕+键盘的组合——TeleTYpewriter ( tty )。
一些终端硬件设备都有自己的内核。例如从键盘输入,以文本模式屏幕上输出。或者通过串行线路传输的输入和输出等等。
简单来说,任何接受输入并以文本形式提供输出的集成软件或设备文件都叫做终端。其他终端,称为pseudo-terminals/pseudo-ttys ,由称为terminal emulators的程序提供。
一些终端仿真器的示例:xterm、script、screen、tmux、unbuffer、expect。
在Linux中, Pseudo-terminal 是一种伪设备对,提供文本终端界面,不与虚拟控制台、计算机终端或串行端口硬件关联。
不同的 Linux 发行版都安装了桌面环境,例如 Ubuntu。Ubuntu 的桌面环境是 GNOME 的修改版本,代表 GNU 网络对象模型环境。GNOME 是一个图形用户界面 (GUI) 和一组适用于 Linux 操作系统用户的计算机桌面应用程序。
使用 GNOME 等图形用户界面 (GUI) 时,你需要可以与 shell 交互并传递内核可以执行的命令的软件,这个程序就被称为终端或模拟器,它在桌面界面上模拟 Shell 环境。
终端软件是模拟器的一个完美例子。终端默认随 Ubuntu 桌面环境一起提供,可用于访问 shell。在Linux世界,有许多模拟器可用,终端只是其中之一。必须理解的是模拟器不是 Shell,它只是一个软件,使我们能够在桌面环境中模拟 Shell 并与之通信。
4 小结
本文尝试讲解控制台,Shell与终端的关系和区别,如果对大家有用,请点赞转发~
作者:杜洛逸
相关阅读: